package org.jsea.meta.api.service;

import org.jsea.meta.api.bean.MetaApiDefinitionBean;

import java.util.ArrayList;
import java.util.List;
import java.util.StringJoiner;

/**
 * --.
 * *
 * author   Jiang.hy
 * create   2022-04-09
 */
public class MetaApiUpdateHandler extends AbstractMetaApiHandler {

    private final List<Object> values = new ArrayList<>();

    public MetaApiUpdateHandler(MetaApiDefinitionBean bean) {
        super(bean);
    }

    @Override
    public String sql() {
        return new StringJoiner(" ")
                .add("update")
                .add(table())
                .add("set")
                .add(setStr())
                .add(getWhere())
                .toString();
    }

    private String setStr() {
        StringJoiner sets = new StringJoiner(", ");
        bean.getData().forEach((k, v) -> {
            if (v == null || v == "") {
                // 跳过null值
                // sets.add(k + " = null");
                return;
            }
            sets.add(k + " = " + qm);
            values.add(v);
        });

        return sets.toString();
    }

    @Override
    public List<Object> getParam() {
        values.addAll(super.getParam());
        return values;
    }
}
